/*
    SpawnSurance - Minecraft Plugin for casualty insurance of inventory contents
    Copyright (C) 2012 Ernest Pazera

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
package com.pdg.mcplugin.spawnsurance;

import java.util.logging.Logger;

import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityListener;

public class SpawnSuranceEntityListener extends EntityListener {

	//plugin
	private SpawnSurance plugin = null;
	private SpawnSurance getPlugin(){
		return plugin;
	}
	
	//constructor
	public SpawnSuranceEntityListener(SpawnSurance theParent){
		plugin = theParent;
	}
	
	//logger
	public Logger getLogger(){
		return getPlugin().getLogger();
	}
	
	//handle entity death
	public void onEntityDeath(EntityDeathEvent event){
		//grab the entity
		Entity theEntity = event.getEntity();
		//if he's a player
		if(theEntity instanceof Player){
			//cast to player
			Player thePlayer = (Player)theEntity;
			//ensure appropriate permission exists
			if(!getPlugin().hasUsePermission(thePlayer)) return;
			//is the player covered?
			if(getPlugin().getDataProvider().isPlayerCovered(thePlayer)){
				//player is covered!
				//persist inventory
				getPlugin().getDataProvider().persistInventory(thePlayer);
				//up the number of claims
				getPlugin().getDataProvider().setPlayerClaims(thePlayer.getName(),1+getPlugin().getDataProvider().retrievePlayerClaims(thePlayer.getName()));
				//send a message to the player
				thePlayer.sendMessage(Constants.messageUsedSpawnSurance);
				//don't drop items
				event.getDrops().clear();
			}
		}
	}
}
